package kyssion.leetcode.num1_50;

public class code7_整数反转 {

    public static void main(String[] args) {
        System.out.println(new code7_整数反转().reverse(1534236469));
    }

    /**
     * 这一道题问题有个坑点就是类型转换
     *
     * @param x
     * @return
     */
    public long reverse(int x) {
        String s = String.valueOf(x);
        if (x >= 0) {
            s = "+" + s;
        }
        char c[] = s.toCharArray();
        char c2[] = new char[c.length];
        for (int a = 1; a < c.length; a++) {
            c2[c.length - a] = c[a];
        }
        c2[0] = c[0];
        try {
            return Integer.valueOf(new String(c2));
        } catch (Exception e) {
            return 0;
        }
    }

    /**
     * 直接使用取余法输出字符串不用二外开辟空间进行计算
     * 真厉害学习   这个其实是一个冗余的思想,有些数据是没有必要使用的
     * @param x
     * @return
     */
    public int reverse2(int x) {
        boolean negative = x < 0;
        if (negative) x = -x;
        long r = 0;
        while (x > 0) {
            r = r * 10 + x % 10;
            x /= 10;
        }
        if (negative) r = -r;
        if (r > Integer.MAX_VALUE || r < Integer.MIN_VALUE) return 0;
        return (int) r;
    }
}
